Enterprise applications typically consist of various components such as an access tier, an application server tier, and a backend tier. In order to deploy an enterprise application, all of its components, including software and hardware must be selected, and the selected hardware and software must be compatible. For example, certain types of operating systems may only run on certain servers, and so on. Furthermore, in order to support a desired capacity of an enterprise application, its components must be configured (or sized) accordingly. Conventionally, application engineers use sizing, configuration tables, tools and benchmark recommendations to design and deploy an appropriately sized application environment comprised of a set of appropriately sized components and deploy it on a set of resources in a data center. However, this process is primarily manual and is time consuming and complex. Furthermore, many of the manual calculations are highly prone to error possibly resulting in deploying a configuration that may not meet service requirements.